<template>
  <div class="dashboard-editor-container">
    <github-corner class="github-corner" />
    <PanelGroup @handleSetLineChartData="handleSetLineChartData"/>
    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
      <line-chart :chart-data="lineChartData" />
    </el-row>

    <el-row :gutter="32">
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <raddar-chart />
        </div>
      </el-col>
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <pie-chart />
        </div>
      </el-col>
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <bar-chart />
        </div>
      </el-col>
    </el-row>

    <el-row :gutter="8">
      <el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;">
        <transaction-table />
      </el-col>
    </el-row>
  </div>
</template>

<script setup lang="ts">
import { getDashboard } from '@/api/dashboard';
import GithubCorner from '@/components/GithubCorner/index.vue'
import { ref } from 'vue';
import PanelGroup from './components/PanelGroup.vue'
import LineChart, { LineChartData } from './components/LineChart.vue'
import RaddarChart from './components/RaddarChart.vue'
import PieChart from './components/PieChart.vue';
import BarChart from './components/BarChart.vue';
import TransactionTable from './components/TransactionTable.vue'

const lineChartData = ref<LineChartData>({
  expectedData: [],
  actualData: []
})
const allData = ref({})
const getData = async () => {
  const { data } = await getDashboard()
  allData.value = data as any
  lineChartData.value = (data as any).newVisitis
}

const handleSetLineChartData = (type: string) => {
  lineChartData.value = (allData.value as any)[type]
}

getData()

</script>

<style lang="scss" scoped>
.dashboard-editor-container{
  padding: 32px;
  background-color: rgb(240, 242, 245);
  position: relative;
  .github-corner {
    position: absolute;
    top: 0px;
    border: 0;
    right: 0;
  }
  .chart-wrapper {
    background: #fff;
    padding: 16px 16px 0;
    margin-bottom: 32px;
  }
}
</style>
